/**
 * 判断是否为空对象
 * @param {*} object 源对象
 * @returns {Boolean} true: 空对象，false: 不为空
 */
export function isEmptyObject(object: any): boolean {
  if (typeof object !== "object" || object === null || object === undefined) {
    return true;
  }
  return Object.keys(object).length === 0;
}

/**
 * 判断是否为驼峰命名
 * @param name 字符串
 */
export function toCamelCase(input: string): string {
  const camelCase = input.replace(/-([a-z])/g, (match, char) =>
    char.toUpperCase()
  );
  return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
}

/**
 * 判断数组是否为空
 * @param array 数组
 * @returns boolean true: 空数组，false: 非空数组
 */
export function isArrayEmpty(array: any[]): boolean {
  if (!Array.isArray(array)) {
    return true;
  }
  return array.length === 0;
}

/**
 * 将数组顺序打乱，每次在数组中随机产生一个位置，依次将数组中的每一项与该次产生的随机位置上的元素交换位置
 * @param {Array} arr 所需操作的数组
 */
export function shuffle(arr: any[]) {
  var l = arr.length;
  var index, temp;
  while (l > 0) {
    index = Math.floor(Math.random() * l);
    temp = arr[l - 1];
    arr[l - 1] = arr[index];
    arr[index] = temp;
    l--;
  }
  return arr;
};
